#ifndef POSITONMODULE_H
#define POSITONMODULE_H

// 相机驱动
#include <Camera_Mech.h>
#include <QString>
#include "DetectCover.h"

typedef struct _ev_car_
{
    std::string type;
    //充电口相对于车牌的 X Y Z
    float x;
    float y;
    float z;

    // 充电口离地高度
    float height;

    //充电口在车的 0：左侧   1：右侧
    int positionSymbol;

    //预设 安全距离 X 方向 （即机械臂与充电口预留30cm距离)
    float safeDistance;

}EV_CAR;

class PositonModule
{
public:
    PositonModule();
    ~PositonModule();

    int init();

    bool connectCam();
    bool softTriggerMECH(cv::Mat &img, bool save);

    bool softTriggerAll(cv::Mat &img, bool save=true);
    //使用梅卡相机2d图片，引导机械臂到3d工作位置
    bool identCoverPos(cv::Mat &img,cv::Rect &rect, float &outx, float &outy, float &outz);

    bool coverPos3D(cv::Mat &img,cv::Rect &rect,std::vector<float>& result);
private:
    Camera_mech *m_mech;
    DetectCover cover_detecter;
    void createImgFolder();
    bool saveIMG(QString fullpath, cv::Mat &img);
    bool mInited =false;

    void loadSysIni();
    bool bUseFlash;

};

#endif // POSITONMODULE_H
